
using System;
using System.Collections.Generic;
using System.Text;
using System.Data;
using System.Data.Common;
using Microsoft.Practices.EnterpriseLibrary.Data.Sql;
using Microsoft.Practices.EnterpriseLibrary.Common;
using System.Configuration;
using Insifo.BE.Gen;
using Insifo.BE;

namespace Insifo.DL.Gen
{
        
    
    public class DLTipoDocumento:  DLTransaction, IDLTransaccion <BETipoDocumento>
    {
    
            
        #region Members
                        
                 
        /// <summary>
        /// Método Inserta un GEN_TipoDocumento 
        /// </summary>
        /// <returns>Devuelve una entidad</returns>

        public BETipoDocumento Insertar(BETipoDocumento pbe)
        {
            BETipoDocumento be = new BETipoDocumento();
            SqlDatabase sqlDB = new SqlDatabase(CadenaConexion.Obtener());
            DbCommand dbCmd = sqlDB.GetStoredProcCommand("uSP_INSIFO_GEN_TipoDocumento_Insertar");
                        
            try
            {
                    dbCmd.CommandTimeout = CadenaConexion.CommandTimeout;
                    dbCmd.Transaction = Transaction.InnerDbTransaction; //Para administrar la transaccion
                    dbCmd.Connection = Transaction.Connection;  //Para administrar la conecion de la transaccion
                        
                //sqlDB.AddInParameter(dbCmd, "@ai_IdTipoDocumento",DbType.Int32, pbe.IdTipoDocumento);

                    sqlDB.AddInParameter(dbCmd, "@as_CodigoDocumento", DbType.String, pbe.CodigoDocumento);
                        
                sqlDB.AddInParameter(dbCmd, "@as_Descripcion",DbType.String, pbe.Descripcion);
                        
                sqlDB.AddInParameter(dbCmd, "@as_EsAdelanto",DbType.String, pbe.EsAdelanto);
                        
                sqlDB.AddInParameter(dbCmd, "@as_GeneraProvision",DbType.String, pbe.GenerarProvision);
                        
                sqlDB.AddInParameter(dbCmd, "@as_AdelantoMultiple",DbType.String, pbe.AdelantoMultiple);
                        
                sqlDB.AddInParameter(dbCmd, "@as_EsFiscal",DbType.String, pbe.EsFiscal);
                        
                sqlDB.AddInParameter(dbCmd, "@as_AdelantoCuentaLocal",DbType.String, pbe.AdelantoCuentaLocal);
                        
                sqlDB.AddInParameter(dbCmd, "@as_AdelantoCuentaDolares",DbType.String, pbe.AdelantoCuentaDolares);
                        
                sqlDB.AddInParameter(dbCmd, "@as_ControlPresupuestal",DbType.String, pbe.ControlPresupuestal);
                         
                        
                sqlDB.AddInParameter(dbCmd, "@as_UsuarioCreacion",DbType.String, pbe.UsuarioCreacion);
                        
                         
                                                       
                using (IDataReader reader = sqlDB.ExecuteReader(dbCmd,dbCmd.Transaction))
                {
                    while (reader.Read())
                    {
                        be.Id = DBValue.Get<int>(reader, "Id");
                        be.FechaCreacion = DBValue.Get<DateTime>(reader, "FechaCreacion");
                        //Error
                        be.Error = DBValue.Get<Int32>(reader, "CodigoError");
                        be.Mensaje = DBValue.Get<String>(reader, "MensajeError");
                        break;
                    }
                }
            }
            catch (Exception ex)
            {
                throw ex;
            }
            finally
            {
                dbCmd.Dispose();
            }
            return be;
        }
        /// <summary>
        /// Método Actualiza un GEN_TipoDocumento 
        /// </summary>
        /// <returns>Devuelve una entidad</returns>
             
        public BETipoDocumento Actualizar(BETipoDocumento pbe)
        {
        BETipoDocumento be = new BETipoDocumento();
        SqlDatabase sqlDB = new SqlDatabase(CadenaConexion.Obtener());
        DbCommand dbCmd = sqlDB.GetStoredProcCommand("uSP_INSIFO_GEN_TipoDocumento_Actualizar");
                        
            try
            {
                dbCmd.CommandTimeout = CadenaConexion.CommandTimeout;
                dbCmd.Transaction = Transaction.InnerDbTransaction; //Para administrar la transaccion
                dbCmd.Connection = Transaction.Connection;  //Para administrar la conecion de la transaccion
                        
                sqlDB.AddInParameter(dbCmd,"@ai_IdTipoDocumento",DbType.Int32, pbe.IdTipoDocumento);

                sqlDB.AddInParameter(dbCmd, "@as_CodigoDocumento", DbType.String, pbe.CodigoDocumento);
                        
                sqlDB.AddInParameter(dbCmd,"@as_Descripcion",DbType.String, pbe.Descripcion);
                        
                sqlDB.AddInParameter(dbCmd,"@as_EsAdelanto",DbType.String, pbe.EsAdelanto);
                        
                sqlDB.AddInParameter(dbCmd,"@as_GeneraProvision",DbType.String, pbe.GenerarProvision);
                        
                sqlDB.AddInParameter(dbCmd,"@as_AdelantoMultiple",DbType.String, pbe.AdelantoMultiple);
                        
                sqlDB.AddInParameter(dbCmd,"@as_EsFiscal",DbType.String, pbe.EsFiscal);
                        
                sqlDB.AddInParameter(dbCmd,"@as_AdelantoCuentaLocal",DbType.String, pbe.AdelantoCuentaLocal);
                        
                sqlDB.AddInParameter(dbCmd,"@as_AdelantoCuentaDolares",DbType.String, pbe.AdelantoCuentaDolares);
                        
                sqlDB.AddInParameter(dbCmd,"@as_ControlPresupuestal",DbType.String, pbe.ControlPresupuestal);
                        
                       
                        
                sqlDB.AddInParameter(dbCmd,"@as_Estado",DbType.String, pbe.Estado);
                        
                       
                        
                sqlDB.AddInParameter(dbCmd,"@as_UsuarioModificacion",DbType.String, pbe.UsuarioModificacion);
                        
                      
                                                       
                using (IDataReader reader = sqlDB.ExecuteReader(dbCmd,dbCmd.Transaction))
                {
                    while (reader.Read())
                    {
                        be.Id = DBValue.Get<int>(reader, "Id");
                        be.FechaModificacion = DBValue.Get<DateTime>(reader, "FechaModificacion");
                        //Error
                        be.Error = DBValue.Get<Int32>(reader, "CodigoError");
                        be.Mensaje = DBValue.Get<String>(reader, "MensajeError");
                        break;
                    }
                }
            }
            catch (Exception ex)
            {
                throw ex;                        
            }
            finally
            {
                dbCmd.Dispose();
            }
            return be;
        }
                                 
        ///<summary>
        /// Método Actualiza el GEN_TipoDocumento 
        ///</summary>
        ///<returns>Devuelve una entidad</returns> 
                   
            public BETipoDocumento Eliminar(BETipoDocumento pbe)
            {
            BETipoDocumento be = new BETipoDocumento();
            SqlDatabase sqlDB = new SqlDatabase(CadenaConexion.Obtener());
            DbCommand dbCmd = sqlDB.GetStoredProcCommand("uSP_INSIFO_GEN_TipoDocumento_Eliminar");
                        
            try
            {
                dbCmd.CommandTimeout = CadenaConexion.CommandTimeout;
                        
                        
                sqlDB.AddInParameter(dbCmd,"@ai_IdTipoDocumento",DbType.Int32, pbe.IdTipoDocumento);
                                                        
                    sqlDB.AddInParameter(dbCmd, "@as_UsuarioModificacion", DbType.String, pbe.UsuarioModificacion);

                using (IDataReader reader = sqlDB.ExecuteReader(dbCmd))
                {
                    while (reader.Read())
                    {
                        be.Id = DBValue.Get<int>(reader, "Id");
                        //Error
                        be.Error = DBValue.Get<Int32>(reader, "CodigoError");
                        be.Mensaje = DBValue.Get<String>(reader, "MensajeError");
                        break;
                    }
                }
            }
            catch (Exception ex)
            {
                throw ex;                        
            }
            finally
            {
                dbCmd.Dispose();
            }
            return be;
        }
                    
        ///<summary>
        /// Método Lista datos de la tabla GEN_TipoDocumento 
        ///</summary>
        ///<returns>Devuelve una Objeto Dataset</returns> 
                   
            public DataSet Listar(BETipoDocumento pbe)
            {
                DataSet ds = new DataSet();
                SqlDatabase sqlDB = new SqlDatabase(CadenaConexion.Obtener());
                DbCommand dbCmd = sqlDB.GetStoredProcCommand("uSP_INSIFO_GEN_TipoDocumento_Listar");
            try
            {
                    dbCmd.CommandTimeout = CadenaConexion.CommandTimeout;
                            
                            
                        sqlDB.AddInParameter(dbCmd, "@as_Descripcion",DbType.String, pbe.Descripcion);

                        sqlDB.AddInParameter(dbCmd, "@as_Estado",DbType.String, pbe.Estado);

                        sqlDB.AddInParameter(dbCmd, "@ai_Pagina", DbType.Int32, pbe.Pagina);
                                                         
                    ds = sqlDB.ExecuteDataSet(dbCmd);
                }
                catch (Exception ex)
                {
                    throw ex;
                }
                finally
                {
                    dbCmd.Dispose();
                }
                return ds;
                        
                }
                                       
        ///<summary>
        /// Método obtiene dato de la tabla GEN_TipoDocumento 
        ///</summary>
        ///<returns>Devuelve una Objeto  </returns> 

            public BETipoDocumento  Obtener(BETipoDocumento pbe)
            {
                BETipoDocumento be = new BETipoDocumento();
                SqlDatabase sqlDB = new SqlDatabase(CadenaConexion.Obtener());
                DbCommand dbCmd = sqlDB.GetStoredProcCommand("uSP_INSIFO_GEN_TipoDocumento_Obtener");
                dbCmd.CommandTimeout = CadenaConexion.CommandTimeout;
            try
            {
            
                            
                    sqlDB.AddInParameter(dbCmd, "@ai_IdTipoDocumento", DbType.Int32, pbe.IdTipoDocumento);
                             
                                                      
                    using (IDataReader reader = sqlDB.ExecuteReader(dbCmd))
                    {
                        while (reader.Read())
                        {

                            be.IdTipoDocumento = DBValue.Get<Int32>(reader, "IdTipoDocumento");
                            be.CodigoDocumento = DBValue.Get<String>(reader, "CodigoDocumento");
                            be.Descripcion = DBValue.Get<String>(reader, "Descripcion");
                            be.EsAdelanto = DBValue.Get<String>(reader, "EsAdelanto");
                            be.GenerarProvision = DBValue.Get<String>(reader, "GeneraProvision");
                            be.AdelantoMultiple = DBValue.Get<String>(reader, "AdelantoMultiple");
                            be.EsFiscal = DBValue.Get<String>(reader, "EsFiscal");
                            be.AdelantoCuentaLocal = DBValue.Get<String>(reader, "AdelantoCuentaLocal");
                            be.AdelantoCuentaDolares = DBValue.Get<String>(reader, "AdelantoCuentaDolares");
                            be.ControlPresupuestal = DBValue.Get<String>(reader, "ControlPresupuestal");
                                     
                            be.Estado = DBValue.Get<String>(reader, "Estado");
                            be.UsuarioCreacion = DBValue.Get<String>(reader, "UsuarioCreacion");
                            be.FechaCreacion = DBValue.Get<DateTime>(reader, "FechaCreacion");
                            be.UsuarioModificacion = DBValue.Get<String>(reader, "UsuarioModificacion");
                            be.FechaModificacion = DBValue.Get<DateTime>(reader, "FechaModificacion");
                                 
                        }
                    }
                          
                }
                catch (Exception ex)
                {
                    throw ex;
                }
                finally
                {
                    dbCmd.Dispose();
                }
                return be;
                        
            }


            //public BEIdGeneralAplicacion InsertarAplicacion(BEIdGeneralAplicacion pbe)
            //{
            //    BEIdGeneralAplicacion be = new BEIdGeneralAplicacion();
            //    SqlDatabase sqlDB = new SqlDatabase(CadenaConexion.Obtener());
            //    DbCommand dbCmd = sqlDB.GetStoredProcCommand("uSP_INSIFO_GEN_TipoDocumentoAplicacion_Insertar");

            //    try
            //    {
            //        dbCmd.CommandTimeout = CadenaConexion.CommandTimeout;
            //        dbCmd.Transaction = Transaction.InnerDbTransaction; //Para administrar la transaccion
            //        dbCmd.Connection = Transaction.Connection;  //Para administrar la conecion de la transaccion

            //        sqlDB.AddInParameter(dbCmd, "@ai_IdTipoDocumento", DbType.Int32, pbe.IdGenerico);
            //        sqlDB.AddInParameter(dbCmd, "@ai_IdAplicacion", DbType.Int32, pbe.IdAplicacion);
            //        sqlDB.AddInParameter(dbCmd, "@as_Estado", DbType.String, pbe.Estado);

            //        using (IDataReader reader = sqlDB.ExecuteReader(dbCmd,dbCmd.Transaction))
            //        {
            //            while (reader.Read())
            //            {
            //                be.IdGenerico = DBValue.Get<Int32>(reader, "IdTipoDocumento");
            //                be.IdAplicacion = DBValue.Get<Int32>(reader, "IdAplicacion");
            //                be.FechaCreacion = DBValue.Get<DateTime>(reader, "FechaCreacion");
            //                //Error
            //                be.Error = DBValue.Get<Int32>(reader, "CodigoError");
            //                be.Mensaje = DBValue.Get<String>(reader, "MensajeError");

            //                break;
            //            }
            //        }
            //    }
            //    catch (Exception e)
            //    {
            //        throw e;
            //    }

            //    finally
            //    {
            //        dbCmd.Dispose();
            //    }
            //    return be;
            //}

            //public DataSet ListarAplicacion(int IdTipoDocumento)
            //{
            //    DataSet ds = new DataSet();
            //    SqlDatabase sqlDB = new SqlDatabase(CadenaConexion.Obtener());
            //    DbCommand dbCmd = sqlDB.GetStoredProcCommand("uSP_INSIFO_GEN_TipoDocumentoAplicacion_Listar");
            //    try
            //    {
            //        dbCmd.CommandTimeout = CadenaConexion.CommandTimeout;
            //        sqlDB.AddInParameter(dbCmd, "@ai_IdTipoDocumento", DbType.Int32, IdTipoDocumento);
            //        ds = sqlDB.ExecuteDataSet(dbCmd);
            //    }
            //    catch (Exception e)
            //    {
            //        throw e;
            //    }
            //    finally
            //    {
            //        dbCmd.Dispose();
            //    }
            //    return ds;
            //}


            public DataSet ListarPorAplicacion(BETipoDocumentoAplicacion pbe)
            {
                DataSet ds = new DataSet();
                SqlDatabase sqlDB = new SqlDatabase(CadenaConexion.Obtener());
                DbCommand dbCmd = sqlDB.GetStoredProcCommand("uSP_GEN_TipoDocumento_X_Aplicacion_Listar");
                try
                {
                    dbCmd.CommandTimeout = CadenaConexion.CommandTimeout;

                    sqlDB.AddInParameter(dbCmd, "@ai_IdAplicacion", DbType.Int32, pbe.IdAplicacion);
                    ds = sqlDB.ExecuteDataSet(dbCmd);
                }
                catch (Exception e)
                {
                    throw e;
                }
                finally
                {
                    dbCmd.Dispose();
                }
                return ds;
            }


            #endregion

    }
}